<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数参数与aeguments</title>
</head>
<body>
    
</body>
<script>
    /*
        函数的参数
            -这里的参数指的是参数的形式 可以接收很多种类型  也可以就用函数的类型来接收  
    */
    let arr = [1,8,9,7,5,6,4]
    // 这里的filter()函数的参数是手写的一个匿名函数  其实也可以使用传递具名函数
    let newarr = arr.filter(item=>{
        return item<3
    })
    console.log(newarr)  // 3
    function num(item){
        return item<3
    }
    let newarr1 = arr.filter(item=>num(item)) // 1
    console.log(newarr1)  //1

    /*
        arguments属性
    */
    function sum(){
        console.log(arguments)  //Arguments [Array(6), callee: ƒ, Symbol(Symbol.iterator): ƒ]  得到的是一个arguments对象
        // 利用arguments对象的第一个属性就是传递过来的数组
        console.log(arguments[0].length)  //6  
        let res = arguments[0].reduce((pre,item)=>{
            return pre+item
        },0)
        return res
    }
    let arrs = [55,74,96,35,31,61]
    let res = sum(arrs)
    console.log(res)

    // 当然 函数中的arguments对象已经算是比较老一点的知识了 新的JS提供了[...args]操作
    function all(...args){
        // console.log([...args])
        let res = args[0].reduce((pre,item)=>{
            return pre+item
        },0)
        return res
    }
    console.log(all(arrs))

    // 在新推出的语法中我们可以直接使用点语法来替代arguments的使用
</script>
</html>